package com.projectx.dao;

import android.database.sqlite.SQLiteDatabase;

import com.projectx.entity.ContactsData;
import com.projectx.entity.UserData;

import org.litepal.LitePal;

import java.util.List;

public class ContactsDataDao {

    /**
     * 根据用户名查找其所有的联系人
     * @param username
     * @return 所有联系人
     */
    public List<ContactsData> allContacts(String username){
        return LitePal.where("username = ?",username).find(ContactsData.class);
    }

    /**
     * 判断用户是否有这个联系人
     * @param username
     * @param contactName
     * @return
     */
    public boolean contactExist(String username,String contactName){
        return !LitePal.where("username = ? and friendName = ?",username,contactName).find(ContactsData.class).isEmpty();
    }

    /**
     * 删除所有关于该user的联系人数据
     * @param username
     * @return 返回删除数据条目
     */
    public int deleteUser(String username){
        return LitePal.deleteAll(ContactsData.class,"username = ?",username);
    }

    /**
     * 删除一个用户的一个联系人
     * @param username
     * @param contactName
     * @return
     */
    public boolean deleteContact(String username,String contactName){
        return LitePal.deleteAll(ContactsData.class,"username = ? and friendName = ?",username,contactName) > 0;
    }
    /**
     * 存入单个联系人
     * @param username
     * @param contactName
     * @param headImageLink
     * @return false可能表示用户已经存在数据库中
     */
    public boolean addContact(String username,String contactName,String headImageLink){
        if (contactExist(username,contactName)){
            return false;
        }
        ContactsData contactsData = new ContactsData();
        contactsData.setUsername(username);
        contactsData.setFriendName(contactName);
        contactsData.setHeadImageLink(headImageLink);
        return contactsData.save();
    }

    /**
     * 增加一个列表的联系人（估计用不到但还是写了）
     * @param contactsData
     * @return
     */
    public int addContacts(List<ContactsData> contactsData){
        int count = 0;
        for (ContactsData data:contactsData
             ) {
            if (addContact(data.getUsername(),data.getFriendName(),data.getHeadImageLink())){
                count++;
            }
        }
        return count;
    }

    /**
     * 用列表更新数据库中指定用户的数据库
     * @param username
     * @param contactsData
     * @return 返回更新完成后列表的人数
     */
    public int updateAllContacts(String username,List<ContactsData> contactsData){
        if (contactsData.isEmpty()){
            return 0;
        }
        LitePal.deleteAll(ContactsData.class,"username = ?",username);
        return addContacts(contactsData);
    }
}
